#表的页面类

import tkinter as tk
from tkinter import ttk
#from 文件操作 import db
from 功能窗口 import Insert_Frame,Delete_Frame,Updata_Frame,Mass_import
from 数据库的连接与使用 import Connect


class Fun_Frame(tk.Frame):
    def __init__(self,root,table):
        super().__init__(root)
        self.table_name=table   #保存表名
        self.table_view = tk.Frame()  # 纸面创建
        self.table_view.pack()  # 绑定
        self.page_create()

    #纸面设计——框架
    def page_create(self):
        #从数据库中获取表
        conn=Connect()
        #属性组
        columns=conn.get_columns(self.table_name)
        #显示表
        self.tree_view=ttk.Treeview(self,show='headings',columns=columns)
        #列宽&对齐方式
        for col in columns:
            self.tree_view.column(col,width=100,anchor='center')
            self.tree_view.heading(col,text=col)

        #填充数据
        self.tree_view.pack(fill=tk.BOTH,expand=True)
        self.show_data_frame()

        #按键框架
        button_frame=tk.Frame(self)
        button_frame.pack(side=tk.BOTTOM,fill='x')  #'y'垂直向上填满可用空间

        #导表
        #lambda 创建匿名函数
        tk.Button(self,text='大量导入',command=lambda :Mass_import(self.tree_view,name="添加",columns=columns,table=self.table_name)).pack(side=tk.LEFT,anchor='n',padx=20,pady=5)
        #添加
        #lambda 创建匿名函数
        tk.Button(self,text='添加',command=lambda :Insert_Frame(self.tree_view,name="添加",columns=columns,table=self.table_name)).pack(side=tk.LEFT,anchor='n',padx=20,pady=5)

        #删除

        tk.Button(self,text='删除',command=lambda :Delete_Frame(self.tree_view,name="删除",table=self.table_name)).pack(side=tk.LEFT,anchor='n',padx=20,pady=5)

        #修改
        tk.Button(self,text='修改信息',command=lambda :Updata_Frame(self.tree_view,name="修改",columns=columns,table=self.table_name)).pack(side=tk.LEFT,anchor='n',padx=20,pady=5)

        #刷新
        tk.Button(self,text='刷新',command=self.show_data_frame).pack(side=tk.LEFT,anchor='n',padx=20,pady=5)


    #纸面设计——填充data
    def show_data_frame(self):
        #清空现有数据
        for _ in map(self.tree_view.delete,self.tree_view.get_children('')):
            pass
        #从数据库获取数据
        conn=Connect()
        data=conn.select(self.table_name)
        #显示
        if not data:
            return
        for index,row in enumerate(data):
            self.tree_view.insert('',index+1,values=(row))


